package com.hpin.mlxteacher.base;

import android.app.Application;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.text.TextUtils;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
import com.baidu.mapapi.SDKInitializer;
import com.hpin.mlxteacher.utils.Constant;
import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;

import cn.smssdk.SMSSDK;

/**
 * Created by Aaron on 2015/7/27.
 */
public class MyApplication extends Application {

    public static final String TAG = MyApplication.class.getSimpleName();

    public SharedPreferences sp;

    private RequestQueue mRequestQueue;


    public void onCreate() {


//		 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
//         .build();
//
//		// imageload 加载图片
//		ImageLoader.getInstance().init(config);
        ImageLoader.getInstance().init(getSimpleConfig());

//		// 在Appliction里面设置我们的异常处理器为UncaughtExceptionHandler处理器
//		CrashHandler handler = CrashHandler.getInstance();
//		handler.init(getApplicationContext());

        // 注意该方法要再setContentView方法之前实现
        // 在使用 SDK 各组间之前初始化 context 信息，传入 ApplicationContext
        SDKInitializer.initialize(getApplicationContext());

        sp = getSharedPreferences(Constant.CONFIG, MODE_PRIVATE);


        //极光推送
//        JPushInterface.setDebugMode(false);//是否开启debug模式
//        JPushInterface.init(this);

        //sharesdk短信验证
        SMSSDK.initSDK(this,"996a94cb20aa", "9f1222ada3b22d2d90d53d26aa244ad2");

    }

    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }

        return mRequestQueue;
    }

    public <T> void addToRequestQueue(Request<T> req, String tag) {
        // set the default tag if tag is empty
        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
        getRequestQueue().add(req);
    }

    public void cancelPendingRequests(Object tag) {
        if (mRequestQueue != null) {
            mRequestQueue.cancelAll(tag);
        }
    }

    /**
     * 比较常用的配置方案
     * @return
     */
    private ImageLoaderConfiguration getSimpleConfig() {

        DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
                .cacheInMemory(true).cacheOnDisc(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .imageScaleType(ImageScaleType.IN_SAMPLE_INT).build();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                getApplicationContext())
                .threadPoolSize(2)
                        // 线程池内加载的数量
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .denyCacheImageMultipleSizesInMemory()
                .memoryCache(new WeakMemoryCache())
                .memoryCacheSize(20 * 1024 * 1024)
//				.discCache(ne)
                .discCacheSize(50 * 1024 * 1024).discCacheFileCount(100)
                        // 缓存的文件数量
                .defaultDisplayImageOptions(defaultOptions)
                .imageDownloader(
                        new BaseImageDownloader(getApplicationContext(),
                                5 * 1000, 30 * 1000)) // connectTimeout
//								.writeDebugLogs()
                .build();// 开始构建

//        //设置缓存的路径
//        File cacheDir = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "imageloader/Cache");
//
//        ImageLoaderConfiguration config = new ImageLoaderConfiguration
//            .Builder(getApplicationContext())
//            .memoryCacheExtraOptions(480, 800) //即保存的每个缓存文件的最大长宽
//            .threadPriority(Thread.NORM_PRIORITY - 2) //线程池中线程的个数
//            .denyCacheImageMultipleSizesInMemory() //禁止缓存多张图片
//            .memoryCache(new LRULimitedMemoryCache(10*1024*1024)) //缓存策略
//            .memoryCacheSize(20 * 1024 * 1024) //设置内存缓存的大小
//            .diskCacheFileNameGenerator(new Md5FileNameGenerator()) //缓存文件名的保存方式
//            .diskCacheSize(50 * 1024 * 1024) //磁盘缓存大小
//            .tasksProcessingOrder(QueueProcessingType.LIFO) //工作队列
//            .diskCacheFileCount(10) //缓存的文件数量
//            .diskCache(new UnlimitedDiskCache(cacheDir)) //自定义缓存路径
//            .writeDebugLogs() // Remove for release app
//            .build();
        return config;
    }


}
